#ifndef MATCHER_H
#define MATCHER_H
#include <vector>
#include <string>
#include <queue>
#include <stack>
#include <string>
#include "stringtokenizer.h"
using namespace std;

/*****************************
Implementation of bmpSearch and computeBmpLast is taken from
http://dev-faqs.blogspot.com/2010/05/boyer-moore-algorithm.html
they are parts of Boyer Moore Algorithm, which garantees us O(n) complexity, which we are
going to use for pattern matching, compared to string.h implementation of string::find, which has worst case of O(mn)

******************************/




class Matcher
{
public:
	Matcher();
	~Matcher();
	int getOperatorPrecedence(string op);
	bool matchExact(string s1, string s2);
	bool matchProcedureName(string s1);
	bool matchConstValue(string s1);
	bool matchVarName(string s1);
	bool matchInteger(string s1);
	bool matchName(string s1);
	bool isSingleDigit(char c);
	bool isCharacter(char c);
	bool isHash(char c);
	bool matchIden(string s1);
	bool matchOperator(string s1);
};

#endif